﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcadPosApp.Utilidades;
using AcadPos.Entity;
using System.Data;

namespace AcadPosApp.Cadastros
{
    public partial class AlocarUsuarioXEstados : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                MetodosAuxiliares.validarPesquisa(ddlTpPesquisa, revNumeros, somenteLetras);
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            carregarUsuarios();
            pnlCadastroEstado.Visible = false;
            pnlEstados.Visible = false;
        }

        protected void carregarUsuarios()
        {
            Usuario usuario = new Usuario();
            string tpPesquisa = ddlTpPesquisa.SelectedValue.ToString();
            if (tpPesquisa == "c")
                usuario.Codigo = Convert.ToInt32(TxtPesquisa.Text);
            else if (tpPesquisa == "n")
                usuario.Nome = TxtPesquisa.Text;
            gvwPesquisa.DataSource = ControlClass.CNUsuario.listarUsuarios(tpPesquisa, usuario);
            gvwPesquisa.DataBind();
            gvwPesquisa.SelectedIndex = -1;
        }

        protected void ddlTpPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            TxtPesquisa.Text = string.Empty;
            MetodosAuxiliares.validarPesquisa(ddlTpPesquisa, revNumeros, somenteLetras);
        }

        protected void gvwPesquisa_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[5].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[5].Text.Trim()) == "ATIVO")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[5].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[5].Visible = false;
            }
            #endregion
        }

        protected void btnNovo_Click(object sender, EventArgs e)
        {
            pnlConsulta.Enabled = false;
            pnlCadastroEstado.Visible = true;
            btnConfirmar.CommandName = "Incluir";
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlCadastroEstado.Visible = false;
            pnlConsulta.Enabled = true;
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {

        }

        protected void gvwPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            pnlEstados.Visible = true;
            carregarEstadosAlocados();
        }

        private void carregarEstadosAlocados()
        {
            int pCodUser = Convert.ToInt32(gvwPesquisa.SelectedDataKey["ID_USUARIO"].ToString());
            gvwEstadosAlocados.DataSource = ControlClass.CNUsuario.obterEstadosXUsuario(pCodUser);
            gvwEstadosAlocados.DataBind();
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {               
                Estado estado = new Estado();
                int pCodUser = Convert.ToInt32(gvwPesquisa.SelectedDataKey["ID_USUARIO"].ToString());
                estado.Status = ddlSituacao.SelectedValue;
                estado.Descricao = ddlUF.SelectedValue;
                if (ControlClass.CNUsuario.verificaEstadoJaAlocado(pCodUser,estado.Descricao))
                {
                    pnlCadastroEstado.Visible = false;
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", "O estado informado já encontra-se alocado para o usuário selecionado!"), true);                    
                }
                else if (btnConfirmar.CommandName == "Incluir")
                {
                    if (ControlClass.CNUsuario.alocarEstado(estado, pCodUser))
                    {
                        carregarEstadosAlocados();
                        pnlCadastroEstado.Visible = false;                       
                        pnlConsulta.Enabled = true;
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                    }
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroSimples, ex.Message.ToString())), true);
            }
        }

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisa.PageIndex = e.NewPageIndex;
            carregarUsuarios();
        }

        protected void gvwEstadosAlocados_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton button = (ImageButton)e.Row.FindControl("ImgExcluir");
                button.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwEstadosAlocados_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Alert de Confirmação
            // Passando por todas as linhas
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
            #endregion

            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[3].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[3].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[3].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[3].Visible = false;
            }
            #endregion
        }

        protected void gvwEstadosAlocados_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {                
                int index = int.Parse((String)e.CommandArgument);
                int pDataKey = Convert.ToInt32(gvwEstadosAlocados.DataKeys[index]["ID_USUARIO_ESTADO"].ToString());
                if (e.CommandName == "Excluir")
                {
                    if (ControlClass.CNUsuario.excluirEstadoXUsuario(pDataKey))
                    {
                        pnlCadastroEstado.Visible = false;
                        pnlConsulta.Enabled = true;
                        carregarEstadosAlocados();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoExcluir, "")), true);                                               
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                        pnlCadastroEstado.Visible = false;
                        pnlConsulta.Enabled = true;                        
                    }
                }

            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, ex.Message.ToString())), true);
                pnlCadastroEstado.Visible = false;
                pnlConsulta.Enabled = true;                        
            }
        }

        protected void gvwEstadosAlocados_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwEstadosAlocados.PageIndex = e.NewPageIndex;
            carregarEstadosAlocados();
        }
    }
}